_____ _    _         _____  _____ _   _          _____   _____  
    / ____| |  | |  /\   |  __ \|_   _| \ | |   /\   / _ \ \ / / _ \ 
   | |  __| |  | | /  \  | |__) | | | |  \| |  /  \ | | | \ V / | | |
   | | |_ | |  | |/ /\ \ |  _  /  | | | . ` | / /\ \| | | |> <| | | |
   | |__| | |__| / ____ \| | \ \ _| |_| |\  |/ ____ \ |_| / . \ |_| |
    \_____|\____/_/    \_\_|  \_\_____|_| \_/_/    \_\___/_/ \_\___/ 
                                                                     
                    ./Guarina0x0
Titulo: TryHackMe - Empline
Fecha: 21-09-2021
Descripcion: Enumeracion - Fuzzing - MySQL - Capability

TryHackMe - Empline Writeup

## Ping:

ping -c1 10.10.24.77

Mediante el comando ping vamos a trazar una ruta ICMP para ver si la maquina esta activa y ante que tipo de sistema operativo estamos

Podemos ver que la respuesta del ttl es 63 , el TTL en maquinas Linux es 64 y en maquinas Windows 128 , en este caso es 63 porque pasa por un nodo intermediario.

## Enumeracion :

Ahora vamos a proceder a ver que servicios tiene esta maquina abiertos para ello vamos a realizar una enumeracion de puertos:

Mediante el parametro --min-rate 5000 va a emitir paquetes no mas lento que 5000 paquetes por segundo

  • Puerto 22 SSH
  • Puerto 80 HTTP
  • Podemos observar que tenemos el puerto 80 abierto , mediante la herramienta WhatWeb vamos a inspeccionar si estamos ante algun gestor de contenido

    Vamos a realizar un escaneo mas profundo aplicando scripts basicos de enumeracion , y nos descubre abierto otro puerto de MySQL

    ## Reconocimiento Web :

    Vamos abrir el navegador y inspeccionar el codigo y buscar algun directorio web potencial , si hacemos "hovering" sobre la seccion "Employment" , vamos a ver un dominio llamado "job.empline.thm"

    Vamos añadir ese dominio a nuestro /etc/hosts por si se esta aplicando virtual hosting

    Como tenemos el puerto de MySQL activo , podemos abrirlo en el navegador para ver si cuenta con algun PhPmyAdmin

    Si abrimos el dominio que habiamos insertado en nuestro /etc/hosts , podemos ver un panel de inicio de sesion de una plataforma llamada "Opencats"

    Podemos buscar informacion sobre este servicio y podemos ver que cuenta con varias vulnerabilidades reportadas

    Como no tenemos credenciales de acceso al panel de inicio , podemos realizar un fuzzing para ver directorios web que tengamos permiso sin tener que usar cuenta

    Podemos ver unos cuantos directorios interesantes entre ellos los siguientes:

  • /careers
  • /scripts
  • /upload
  • /db
  • /ci
  • Podemos ir investigando uno por uno y nos encontraremos que el que mas potencial tiene es /careers un directorio que sirve para buscar ofertas de trabajo

    Si pinchamos en la oferta que tenemos , podemos ver que nos deja subir un archivo normalmente el CV , pero aqui nosotros vamos a subir una Shell Reversa , ya que parece que no aplica tecnicas de evasion de archivos potenciales

    Antes de enviar la peticion , vamos a capturar los datos que se envian al servidor mediante Burp Suite

    Y vamos a cambiar el tipo de contenido como si fuera una imagen

    Content-Type: image/jpg

    Y vamos a poner los magic numbers de GIF

    GIF87a

    Mediante Burp Suite podemos observar que se va a guardar en la ruta /upload/careerportaladd , por lo que tenemos que abrir el directorio web y ejecutar la Shell Reversa mientras que estamos a la escucha en el puerto que hemos configurado

    ## Acceso como WWW-DATA :

    Ya tenemos acceso remoto a la maquina como el usuario www-data , y vamos a proceder abrir el fichero config.php para obtener las credenciales del usuario de MySql

    Podemos ver todos los ficheros , a nosotros nos interesa el fichero de config.php que es donde se almacenan las credenciales

    ## Acceso a MySQL :

    Mediante las credenciales que tenemos vamos a proceder autentificarnos en el servicio de base de datos y proceder a ver las Bases de Datos que contiene

    Podemos ver la Base de Datos llamada "opencats" , la cual contiene una tabla llamada User , con todos los campos de informacion de los usuarios registrados

    Nosotros vamos hacer una query de el user_name , email y password de la tabla user

    Nos reportara el nombre de los usuarios con las diferentes contraseñas encriptadas en lo que parece MD5

    Podemos tirar de Rainbow tables para descifrar la contraseña , para ello usaremos https://crackstation.net/

    Y nos reporta la contraseña del usuario George , por lo que vamos a intentar auntentificarnos en el servicio SSH que teniamos abierto

    ## Escalada de Privilegios :

    Una vez que podemos ver el flag del usuario , nos quedaria escalar privilegios para poder ver el flag de Root , para ello vamos a ir inspeccionando la maquina para ver la forma en la que escalar privilegios

    Si vemos las "Capability" que son grupos de kernel que pretenden delimitar las acciones que puedes hacer como el usuario Root

    Las Capability se aplican sobre ficheros y procesos , utilizaremos una serie de comandos como Getcap para obtenerlas

    getcap -r / 2>/dev/null

    Podemos observar la capability "cap_chown"

    Podemos abusar de esta capability para darnos permisos de la carpeta de Root a nuestro usuario y asi poder ver el flag

    /usr/local/bin/ruby -e 'require "fileutils"; FileUtils.chown "george","george","/root/"'

    Ya tendriamos permiso para poder acceder al directorio de Root y poder mirar el flag de Root

    Y tendriamos la maquina Empline explotada!!